package com.hhxy.service;

import com.hhxy.mapper.BrandMapper;
import com.hhxy.pojo.Brand;
import com.hhxy.utils.SqlSessionFactoryUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.util.List;

/**
 * 业务逻辑层（BLL）& 业务模型（Model）
 * 业务逻辑层：调用数据访问层的基础功能，进行逻辑处理，实现业务功能
 * 业务模型：包括了业务逻辑层 和 数据访问层的所有功能
 *           这里是业务模型的一部分，进行逻辑处理，实现业务功能
 *
 */
public class BrandService {
    //因为所有的方法都需要获取sqlSF对象，所以将其由局部变量变为成员，提升它的作用域
    SqlSessionFactory sqlSF = SqlSessionFactoryUtil.getSqlSF();

    /*查询所有功能*/
    /**
     * 查询所有数据
     * @return
     */
    public List<Brand> selectAll(){
        //1、使用工具类获取SqlSessionFactory对象

        //2、获取SqlSession对象
        SqlSession sqlS = sqlSF.openSession(true);
        //3、获取Mapper接口对象
        BrandMapper mapper = sqlS.getMapper(BrandMapper.class);
        //4、执行SQl语句
        List<Brand> brands = mapper.selectAll();
        //5、提交事物（已设置为自动提交）
        //6、释放资源
        sqlS.close();
        //7、返回查询结果
        return brands;
    }

    /*新增功能*/
    /**
     * 添加数据
     * @param brand
     */
    public void add(Brand brand){
        //1、使用工具类获取SqlSessionFactory对象
        //2、获取SqlSession对象
        SqlSession sqlS = sqlSF.openSession(true);
        //3、获取Mapper接口对象
        BrandMapper mapper = sqlS.getMapper(BrandMapper.class);
        //4、执行SQL语句
        mapper.add(brand);
        //5、提交事物（已设置为自动提交）
        //6、释放资源
        sqlS.close();
    }

    /*修改功能*/
    /**
     * 根据Id查询数据
     */
    public Brand selectById(int id){
        //1、使用工具类获取SqlSessionFactory对象
        //2、获取SqlSession对象
        SqlSession sqlS = sqlSF.openSession(true);
        //3、获取Mapper接口对象
        BrandMapper mapper = sqlS.getMapper(BrandMapper.class);
        //4、执行SQL语句
        Brand brand = mapper.selectById(id);
        //5、提交事物（已自动提交）
        //6、释放资源
        sqlS.close();
        //7、返回查询结果
        return brand;
    }
    /**
     * 更新数据
     */
    public void update(Brand brand){
        //1、使用工具类获取SqlSessionFactory对象
        //2、获取SqlSession对象
        SqlSession sqlS = sqlSF.openSession(true);
        //3、获取Mapper接口对象
        BrandMapper mapper = sqlS.getMapper(BrandMapper.class);
        //4、执行SQL语句
        mapper.update(brand);
        //5、提交事物（已手动提交）
        //6、释放资源
        sqlS.close();
    }

    /*删除功能*/
    /**
     * 更具id删除数据
     */
    public void delete(int id){
        //1、使用工具类获取SQL Session Factory对象
        //2、获取SqlSession对象
        SqlSession sqlS = sqlSF.openSession(true);
        //3、获取Mapper接口对象
        BrandMapper mapper = sqlS.getMapper(BrandMapper.class);
        //4、执行SQl语句
        mapper.deleteById(id);
        //5、提交事务(已手动提交)
        //6、释放资源
        sqlS.close();
    }


}
